/* Real definition of EntityName is 3 PACKED strings of any length (32 is just an example). No
offests for Asm since each String address must be calculated by adding length byte to last string ptr.
In Pascal, String(32) will be 34 bytes long since fields never start on an odd byte unless they are
only a byte long. So this will generate correct looking interfaces for Pascal and C, but they will not
be the same, which is OK since they are not used. */
struct EntityName {
SimpleStr32 objStr;
char pad1; /*Str32's aligned on even word boundries.*/
SimpleStr32 typeStr;
char pad2;
SimpleStr32 zoneStr;
char pad3;
};
typedef EntityName *EntityPtr;
struct RetransType {
unsigned char retransInterval;
unsigned char retransCount;
};
typedef struct RetransType RetransType;
struct BDSElement {
short buffSize;
Ptr buffPtr;
short dataSize;
long userBytes;
};
typedef struct BDSElement BDSElement;
typedef BDSElement BDSType[8];
typedef BDSType *BDSPtr;
typedef char BitMapType;
struct ATLAPRec {
ABCallType abOpcode;
short abResult;
long abUserReference;
LAPAdrBlock lapAddress;
short lapReqCount;
short lapActCount;
Ptr lapDataPtr;
};
typedef struct ATLAPRec ATLAPRec;
typedef ATLAPRec *ATLAPRecPtr, **ATLAPRecHandle;
struct ATDDPRec {
ABCallType abOpcode;
short abResult;
long abUserReference;
short ddpType;
short ddpSocket;
AddrBlock ddpAddress;
short ddpReqCount;
short ddpActCount;
Ptr ddpDataPtr;
short ddpNodeID;
};
typedef struct ATDDPRec ATDDPRec;
typedef ATDDPRec *ATDDPRecPtr, **ATDDPRecHandle;
struct ATNBPRec {
ABCallType abOpcode;
short abResult;
long abUserReference;
EntityPtr nbpEntityPtr;
Ptr nbpBufPtr;
short nbpBufSize;
short nbpDataField;
AddrBlock nbpAddress;
RetransType nbpRetransmitInfo;
};
typedef struct ATNBPRec ATNBPRec;
typedef ATNBPRec *ATNBPRecPtr, **ATNBPRecHandle;
struct ATATPRec {
ABCallType abOpcode;
short abResult;
long abUserReference;
short atpSocket;
AddrBlock atpAddress;
short atpReqCount;
Ptr atpDataPtr;
BDSPtr atpRspBDSPtr;
BitMapType atpBitMap;
short atpTransID;
short atpActCount;
long atpUserData;
Boolean atpXO;
Boolean atpEOM;
short atpTimeOut;
short atpRetries;
short atpNumBufs;
short atpNumRsp;
short atpBDSSize;
long atpRspUData;
Ptr atpRspBuf;
short atpRspSize;
};
typedef struct ATATPRec ATATPRec;
typedef ATATPRec *ATATPRecPtr, **ATATPRecHandle;
typedef struct {
char cmdByte;
char startEndFlag;
short forkRefNum;
long rwOffset;
long reqCount;
char newLineFlag;
char newLineChar;
}AFPCommandBlock;
#define XPPPBHeader \
QElem *qLink;\
short qType;\
short ioTrap;\
Ptr ioCmdAddr;\
ProcPtr ioCompletion;\
OSErr ioResult;\
long cmdResult;\
short ioVRefNum;\
short ioRefNum;\
short csCode;
typedef struct {
XPPPBHeader
short sessRefnum; /*Offset to session refnum*/
char aspTimeout; /*Timeout for ATP*/
char aspRetry; /*Retry count for ATP*/
short cbSize; /*Command block size*/
Ptr cbPtr; /*Command block pointer*/
short rbSize; /*Reply buffer size*/
Ptr rbPtr; /*Reply buffer pointer*/
short wdSize; /*Write Data size*/
Ptr wdPtr; /*Write Data pointer*/
char ccbStart[296]; /*CCB memory allocated for driver afpWrite max size(CCB)=296 all other calls=150*/
}XPPPrmBlk;
typedef struct {
XPPPBHeader
short sessRefnum; /*Offset to session refnum */
char aspTimeout; /*Timeout for ATP */
char aspRetry; /*Retry count for ATP */
short cbSize; /*Command block size */
Ptr cbPtr; /*Command block pointer */
short rbSize; /*Reply buffer size */
Ptr rbPtr; /*Reply buffer pointer */
AddrBlock afpAddrBlock; /*block in AFP login */
Ptr afpSCBPtr; /*SCB pointer in AFP login */
Ptr afpAttnRoutine; /*routine pointer in AFP login */
char ccbFill[144]; /*CCB memory allocated for driver Login needs only 150 bytes BUT CCB really starts in the middle of AFPSCBPtr and also clobbers AFPAttnRoutine. */
}AFPLoginPrm;
typedef struct {
XPPPBHeader
short sessRefnum; /*Offset to session refnum */
char aspTimeout; /*Timeout for ATP */
char aspRetry; /*Retry count for ATP */
AddrBlock serverAddr; /*Server address block */
Ptr scbPointer; /*SCB pointer */
Ptr attnRoutine; /*Attention routine pointer*/
}ASPOpenPrm;
typedef ASPOpenPrm *ASPOpenPrmPtr;
typedef struct {
XPPPBHeader
Ptr abortSCBPtr; /*SCB pointer for AbortOS */
}ASPAbortPrm;
typedef struct {
XPPPBHeader
short aspMaxCmdSize; /*For SPGetParms*/
short aspQuantumSize;
short numSesss;
}ASPGetparmsBlk;
typedef struct {
XPPPBHeader
short xppSubCode;
char xppTimeout; /*retry interval (seconds)*/
char xppRetry; /*retry count*/
short filler1;
Ptr zipBuffPtr; /*pointer to buffer (must be 578 bytes)*/
short zipNumZones; /*no. of zone names in this response*/
char zipLastFlag; /*non-zero if no more zones*/
char filler2; /*filler*/
char zipInfoField[70]; /*on initial call, set first word to zero*/
}XCallParam;
typedef struct {
short entryLength;
Ptr entryPtr;
}WDSElement;
typedef struct {
AddrBlock nteAddress; /*network address of entity*/
char filler;
char entityData[99]; /*Object, Type & Zone*/
}NTElement;
typedef struct {
Ptr qNext; /*ptr to next NTE*/
NTElement nt;
}NamesTableEntry;
#define MPPATPHeader \
QElem *qLink; /*next queue entry*/\
short qType; /*queue type*/\
short ioTrap; /*routine trap*/\
Ptr ioCmdAddr; /*routine address*/\
ProcPtr ioCompletion; /*completion routine*/\
OSErr ioResult; /*result code*/\
long userData; /*Command result (ATP user bytes)*/\
short reqTID; /*request transaction ID*/\
short ioRefNum; /*driver reference number*/\
short csCode; /*Call command code*/
typedef struct {
MPPATPHeader
}MPPparms;
typedef struct {
MPPATPHeader
char protType; /*ALAP protocol Type */
char filler;
union {
Ptr wdsPointer; /*-> write data structure*/
Ptr handler; /*-> protocol handler routine*/
} LAPptrs;
}LAPparms;
typedef struct {
MPPATPHeader
char socket; /*socket number */
char checksumFlag; /*check sum flag */
union {
Ptr wdsPointer; /*-> write data structure*/
Ptr listener; /*->write data structure or -> Listener*/
} DDPptrs;
}DDPparms;
typedef struct {
MPPATPHeader
char interval; /*retry interval */
char count; /*retry count */
union {
Ptr ntQElPtr;
Ptr entityPtr;
} NBPPtrs;
union {
char verifyFlag;
struct {
Ptr retBuffPtr;
short retBuffSize;
short maxToGet;
short numGotten;
} Lookup;
struct {
AddrBlock confirmAddr;
char newSocket;
} Confirm;
} parm;
}NBPparms;
typedef struct {
MPPATPHeader
char newSelfFlag; /*self-send toggle flag */
char oldSelfFlag; /*previous self-send state */
}SetSelfparms;
typedef struct {
MPPATPHeader
Ptr nKillQEl; /*ptr to i/o queue element to cancel */
}NBPKillparms;
typedef struct {
MPPATPHeader /*max. concurrent NBP requests*/
short version; /*requested info version*/
Ptr varsPtr; /*pointer to well known MPP vars*/
Ptr DCEPtr; /*pointer to MPP DCE*/
short portID; /*port number [0..7]*/
long configuration; /*32-bit configuration word*/
short selfSend; /*non zero if SelfSend enabled*/
short netLo; /*low value of network range*/
short netHi; /*high value of network range*/
long ourAdd; /*our 24-bit AppleTalk address*/
long routerAddr; /*24-bit address of (last) router*/
short numOfPHs; /*max. number of protocol handlers*/
short numOfSkts; /*max. number of static sockets*/
short numNBPEs; /*max. concurrent NBP requests*/
Ptr nTQueue; /*pointer to registered name queue*/
short LAlength; /*length in bytes of data link addr*/
Ptr linkAddr; /*data link address returned*/
Ptr zoneName; /*zone name returned*/
}GetAppleTalkInfoParm;
typedef struct {
MPPATPHeader
Ptr appName; /*pointer to application name in buffer*/
}ATalkClosePrepParm;
typedef union {
MPPparms MPP; /*General MPP parms*/
LAPparms LAP; /*ALAP calls*/
DDPparms DDP; /*DDP calls*/
NBPparms NBP; /*NBP calls*/
SetSelfparms SETSELF ;
NBPKillparms NBPKILL ;
GetAppleTalkInfoParm GAIINFO;
ATalkClosePrepParm ATALKCLOSE;
}MPPParamBlock;
typedef MPPParamBlock *MPPPBPtr;
#define MOREATPHeader \
char atpSocket; /*currbitmap for requests or ATP socket number*/\